@@ -65,8 +65,10 @@ module Agents |
||
65 | 65 |
private |
66 | 66 |
|
67 | 67 |
def handle_payload(payload) |
68 |
- if payload[:latitude].present? && payload[:longitude].present? |
|
69 |
- create_event payload: payload, lat: payload[:latitude].to_f, lng: payload[:longitude].to_f |
|
68 |
+ location = Location.new(payload) |
|
69 |
+ |
|
70 |
+ if location.present? |
|
71 |
+ create_event payload: payload, location: location |
|
70 | 72 |
end |
71 | 73 |
end |
72 | 74 |
end |
@@ -7,7 +7,7 @@ class Event < ActiveRecord::Base |
||
7 | 7 |
include JSONSerializedField |
8 | 8 |
include LiquidDroppable |
9 | 9 |
|
10 |
- attr_accessible :lat, :lng, :payload, :user_id, :user, :expires_at |
|
10 |
+ attr_accessible :lat, :lng, :location, :payload, :user_id, :user, :expires_at |
|
11 | 11 |
|
12 | 12 |
acts_as_mappable |
13 | 13 |
|
@@ -53,6 +53,19 @@ class Event < ActiveRecord::Base |
||
53 | 53 |
speed: payload[:speed].presence) |
54 | 54 |
end |
55 | 55 |
|
56 |
+ def location=(location) |
|
57 |
+ case location |
|
58 |
+ when nil |
|
59 |
+ self.lat = self.lng = nil |
|
60 |
+ return |
|
61 |
+ when Location |
|
62 |
+ else |
|
63 |
+ location = Location.new(location) |
|
64 |
+ end |
|
65 |
+ self.lat, self.lng = location.lat, location.lng |
|
66 |
+ location |
|
67 |
+ end |
|
68 |
+ |
|
56 | 69 |
# Emit this event again, as a new Event. |
57 | 70 |
def reemit! |
58 | 71 |
agent.create_event :payload => payload, :lat => lat, :lng => lng |
@@ -34,6 +34,9 @@ class Location |
||
34 | 34 |
} |
35 | 35 |
end |
36 | 36 |
|
37 |
+ alias latitude lat |
|
38 |
+ alias latitude= lat= |
|
39 |
+ |
|
37 | 40 |
def lng=(value) |
38 | 41 |
self[:lng] = floatify(value) { |f| |
39 | 42 |
if f.abs <= 180 |
@@ -44,6 +47,9 @@ class Location |
||
44 | 47 |
} |
45 | 48 |
end |
46 | 49 |
|
50 |
+ alias longitude lng |
|
51 |
+ alias longitude= lng= |
|
52 |
+ |
|
47 | 53 |
def radius=(value) |
48 | 54 |
self[:radius] = floatify(value) { |f| f if f >= 0 } |
49 | 55 |
end |